package com.hyt.it.ogt.ks.service;

import com.hyt.it.ogt.ks.api.kw.model.ForceFinishExamDTO;
import com.hyt.it.ogt.ks.enums.ApplyCheckSkipTypeCode;
import com.hyt.it.ogt.ks.model.entity.ApplyCheck;
import com.hyt.it.ogt.ks.model.entity.CandidateLog;
import com.hyt.it.ogt.ks.model.entity.CandidateLogOther;
import com.hyt.it.ogt.ks.model.entity.CandidatePaper;
import com.hyt.it.ogt.ks.model.vo.LogVO;

import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.util.List;

public interface ILogService {

	void saveAnswerLog(List<CandidateLog> logs);

    void saveAnswerLog(CandidateLog item);

    void loginLog(String examId, String candidateId, boolean secondLogin, String from, String deviceType, String ip);

	void finishExamLog(String examId, String candidateId, String paperId, String paperVersion, Integer finishType);

	void markItem(String examId, String candidateId, String itemId);

	void sureInfoLog(String examId, String candidateId);

	void startExamLog(String examId, String candidateId);

	void recoverExamLog(String examId, String candidateId, String userId, String paperId, String paperVersion);

	void addTimeLog(String examId, String candidateId, String paperId, String paperVersion,
					Long extraTime, String userId, LocalDateTime now);

	void resetLoginLog(String examId, String candidateId, String userId);

	void applySkipLog(ApplyCheck applyCheck, ApplyCheckSkipTypeCode type, LocalDateTime createDate);

	void screenShotLog(String examId, String id);

	void faceLog(String examId, String examCandidateId, String orderId);

    void faceFailLog(String examId, String examCandidateId);

    void applyCheckLog(ApplyCheck dbApplyCheck);

	void cancelPackageCommitLog(CandidatePaper candidatePaper, String userId);

	void promiseLog(LogVO logVO);

	String getIp(HttpServletRequest request);

	void appLog(CandidateLogOther candidateLog);
}
